import type { Pagination } from "./pagination";
import { ArticleTag } from "./tag";
/**
 * 文章类，用于表示文章的信息
 */
export class Article {
  id: string;
  // 文章标题
  title: string;
  // 文章摘要
  summary: string;
  // 所属分类名
  categoryName: string;
  // 缩略图
  thumbnail: string;
  // 访问量，可选
  viewCount?: number;
  // 星级，可选
  star?: number;
  // 代码主题，可选
  codeTheme?: string;
  // 更新时间，可选
  updateTime?: string;
  // 创建时间，可选
  createTime?: string;
  // 评论数量，可选
  commentCount?: number;
  // 标签列表，可选
  tagList?: Array<ArticleTag>;
  // 创建者，可选
  createBy?: string;
  /**
   * 构造函数，初始化文章类的基本属性
   */
  constructor() {
    this.id = "";
    this.title = "";
    this.summary = "";
    this.categoryName = "";
    this.thumbnail = "";
    this.viewCount = 0;
    this.codeTheme = "";
    this.updateTime = "";
    this.createTime = "";
    this.star = 0;
    this.commentCount = 0;
    this.createBy = "";
    this.tagList = [];
  }
}
/**
 * 搜索表单接口，用于表示搜索文章时的表单参数
 */
export interface SearchForm {
  // 标题，可选
  title?: string;
  // 分类ID，可选
  categoryId?: string;
  // 是否允许评论，可选
  isComment?: string;
  // 是否置顶，可选
  isTop?: string;
}
/**
 * 文章列表类型，表示文章的集合
 */
export type ArticleList = Array<Article>;
/**
 * 查询文章参数类型，用于表示分页查询文章时的参数
 */
export type QueryArticleParam = Omit<Pagination, "total"> & SearchForm;
/**
 * 文章详情类，扩展于Article类，包含文章的详细信息
 */
export class ArticleDetail extends Article {
  // 文章内容，可选
  content?: string;
  // 更新者名称，可选
  updateByName?: string;
  // 创建者名称，可选
  createByName?: string;
  // 是否允许评论，可选
  isComment?: string;
}